package br.com.esporte.negocios.fachada;

import java.util.Collection;
import java.util.List;

import br.com.esporte.negocios.entidade.imp.DiaPraticadoGrupo;
import br.com.esporte.negocios.entidade.imp.Grupo;
import br.com.esporte.negocios.entidade.imp.GrupoEsporteGrupo;
import br.com.esporte.negocios.entidade.imp.GrupoEsporteIndividual;
import br.com.esporte.negocios.entidade.imp.Partida;
import br.com.esporte.negocios.entidade.imp.PresencaDiaPraticado;
import br.com.esporte.negocios.entidade.imp.Regra;
import br.com.esporte.negocios.entidade.imp.Usuario;
import br.com.esporte.negocios.entidade.util.TipoEsporteGrupoEnum;
import br.com.esporte.repositorio.filtro.imp.FiltroDiaPraticadoGrupo;
import br.com.esporte.repositorio.filtro.imp.FiltroGrupo;
import br.com.esporte.repositorio.filtro.imp.FiltroGrupoEsporteGrupo;
import br.com.esporte.repositorio.filtro.imp.FiltroGrupoEsporteIndividual;
import br.com.esporte.repositorio.filtro.imp.FiltroPartida;
import br.com.esporte.repositorio.filtro.imp.FiltroPresencaDiaPraticado;
import br.com.esporte.repositorio.filtro.imp.FiltroRegra;
import br.com.esporte.repositorio.filtro.imp.FiltroUsuario;

/**
 * @author Milton Domingues
 */
public interface IFachada {

	public void alterarDiaPraticadoGrupo(DiaPraticadoGrupo dia, Usuario usuario);

	public void alterarGrupoEsporteGrupo(GrupoEsporteGrupo grupo, Usuario usuario);

	public void alterarGrupoEsporteIndividual(GrupoEsporteIndividual grupo, Usuario usuario);

	public void alterarPartida(Partida partida, Usuario usuario);

	public void alterarPresencaDiaPraticado(PresencaDiaPraticado presenca, Usuario usuario);

	public void alterarRegra(Regra regra, Usuario usuario);

	public DiaPraticadoGrupo buscarDiaPraticadoGrupo(Long id);

	public GrupoEsporteGrupo buscarGrupoEsporteGrupo(Long id);

	public GrupoEsporteIndividual buscarGrupoEsporteIndividual(Long id);

	public Partida buscarPartida(Long id);

	public PresencaDiaPraticado buscarPresencaDiaPraticado(Long id);

	public Usuario buscarUsuario(Long id);

	public Collection<DiaPraticadoGrupo> consultar(FiltroDiaPraticadoGrupo filtro);

	public Collection<Grupo> consultar(FiltroGrupo filtro);

	public Collection<GrupoEsporteGrupo> consultar(FiltroGrupoEsporteGrupo filtro);

	public Collection<GrupoEsporteIndividual> consultar(FiltroGrupoEsporteIndividual filtro);

	public Collection<Partida> consultar(FiltroPartida filtro);

	public Collection<PresencaDiaPraticado> consultar(FiltroPresencaDiaPraticado filtro);

	public Collection<DiaPraticadoGrupo> consultarDiaPraticadoGrupo(FiltroDiaPraticadoGrupo filtroDiaPraticadoGrupo);

	public List<GrupoEsporteGrupo> consultarEsporteGrupoUsuario(TipoEsporteGrupoEnum tipo, Usuario usuario);

	public Collection<Regra> consultarRegra(FiltroRegra filtroRegra);

	public Collection<Usuario> consultarUsuario(FiltroUsuario filtroUsuario);

	public List<Usuario> consultarUsuarioGrupo(Grupo grupo);

	public void enviarEmail(String texto, Usuario usuario);

	public void inserirDiaPraticadoGrupo(DiaPraticadoGrupo dia, Usuario usuario);

	public void inserirGrupoEsporteGrupo(GrupoEsporteGrupo grupo, Usuario usuario);

	public void inserirGrupoEsporteIndividual(GrupoEsporteIndividual grupo, Usuario usuario);

	public void inserirPartida(Partida partida, Usuario usuario);

	public void inserirPresencaDiaPraticado(PresencaDiaPraticado presenca, Usuario usuario);

	public void inserirRegra(Regra regra, Usuario usuario);

	public void inserirUsuario(Usuario usuario);

	public Usuario loadUsuario(Long id);

	public void removerUsuario(Usuario usuario);

	public void validarLogin(Usuario usuario);

}
